﻿Imports System.Data
Imports Logica

Partial Class ConsultarMetas
    Inherits System.Web.UI.Page

    ''' <summary>
    ''' Validaciones previas a mostrar las metas.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Gestor.usuarioTienePermiso(Session("identificacion"), 56) Then
            Response.Redirect("SinPermisos.aspx")
        End If

        If Request.QueryString("id") Is Nothing Then
            btnRegistrar.Visible = False
            btnModificar.Visible = False
            btnEliminar.Visible = False
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = "Debe seleccionar un usuario."
        ElseIf Not IsPostBack Then
            mostrarMetas()
        End If

        ' Permisos
        If Not Gestor.usuarioTienePermiso(Session("identificacion"), 54) Then
            btnAsignarBonificacion.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(Session("identificacion"), 57) Then
            btnRegistrar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(Session("identificacion"), 58) Then
            btnModificar.Enabled = False
        End If

        If Not Gestor.usuarioTienePermiso(Session("identificacion"), 59) Then
            btnEliminar.Enabled = False
        End If
    End Sub

    ''' <summary>
    ''' Muestra las metas del usuario.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Private Sub mostrarMetas()
        Dim data As New DataTable
        Dim metas As List(Of Hashtable)

        data.Columns.Add("Código")
        data.Columns.Add("Descripción")
        data.Columns.Add("Fecha de Inicio")
        data.Columns.Add("Fecha Esperada")
        data.Columns.Add("Fecha Real")

        Try
            Dim fechaReal As String
            metas = Gestor.consultarMetas(Request.QueryString("id"))

            For Each meta As Hashtable In metas
                fechaReal = CDate(meta("fechaReal")).ToString("dd/MM/yyyy")

                If fechaReal = "01/01/0001" Then
                    fechaReal = "N/A"
                End If

                data.Rows.Add(meta("codigo"), meta("descripcion"), CDate(meta("fechaInicio")).ToString("dd/MM/yyyy"), CDate(meta("fechaEsperada")).ToString("dd/MM/yyyy"), fechaReal)
            Next

            If metas.Count = 0 Then
                Throw New Exception("El usuario no posee metas.")
            Else
                btnModificar.Visible = True
                btnEliminar.Visible = True
            End If

            btnRegistrar.Visible = True

            gvMetas.SelectedIndex = -1
            gvMetas.DataSource = data
            gvMetas.DataBind()
        Catch exc As SqlClient.SqlException
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = "Error de conexión."
        Catch exc As Exception
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = exc.Message
        End Try
    End Sub

    ''' <summary>
    ''' Muestra la pantalla para registrar la meta seleccionada.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Protected Sub btnRegistrar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRegistrar.Click
        Response.Redirect("RegistrarMeta.aspx?idUsuario=" & Request.QueryString("id"))
    End Sub

    ''' <summary>
    ''' Muestra la pantalla para modificar la meta seleccionada.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Protected Sub btnModificar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        If gvMetas.SelectedRow Is Nothing Then
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = "Seleccione una meta."
        Else
            Response.Redirect("ModificarMeta.aspx?idUsuario=" & Request.QueryString("id") & "&idMeta=" & gvMetas.SelectedRow.Cells(1).Text)
        End If
    End Sub

    ''' <summary>
    ''' Elimina la meta seleccionada.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Protected Sub btnEliminar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        If gvMetas.SelectedRow Is Nothing Then
            lblError.ForeColor = Drawing.Color.Red
            lblError.Text = "Seleccione una meta."
        Else
            Gestor.eliminarMeta(CInt(gvMetas.SelectedRow.Cells(1).Text))
            mostrarMetas()
        End If
    End Sub

    ''' <summary>
    ''' Vuelve a la pantalla de buscar usuario.
    ''' </summary>
    ''' <remarks>Creado por: Elías Baldioceda, Fecha: 27/07/2010, Modificado: 27/07/2010</remarks>
    Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Response.Redirect("BuscarUsuario.aspx")
    End Sub

    Protected Sub btnAsignarBonificacion_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAsignarBonificacion.Click
        Response.Redirect("AsignarBonificacionMeta.aspx?id=" & Request.QueryString("id"))
    End Sub
End Class
